package com.exam.controller;

import com.exam.entity.Admin;
import com.exam.entity.ApiResult;
import com.exam.serviceimpl.AdminServiceImpl;
import com.exam.util.ApiResultHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 管理员管理控制器，负责处理与管理员相关的HTTP请求
 */

@RestController
public class AdminController {

    /**
     * 管理员服务实现类，用于业务逻辑处理
     */
    private AdminServiceImpl adminService;

    /**
     * 通过构造方法注入AdminServiceImpl
     * @param adminService 管理员服务实现类
     */
    @Autowired
    public AdminController(AdminServiceImpl adminService){
        this.adminService = adminService;
    }

    /**
     * 查询所有管理员信息
     * @return 所有管理员信息的ApiResult封装
     */
    @GetMapping("/admins")
    public ApiResult findAll(){
        System.out.println("查询全部");
        return ApiResultHandler.success(adminService.findAll());
    }

    /**
     * 根据管理员ID查询管理员信息
     * @param adminId 管理员ID
     * @return 管理员信息
     */
    @GetMapping("/admin/{adminId}")
    public ApiResult findById(@PathVariable("adminId") Integer adminId){
        System.out.println("根据ID查找");
        return ApiResultHandler.success(adminService.findById(adminId));
    }

    /**
     * 根据管理员ID删除管理员
     * @param adminId 管理员ID
     * @return 删除结果
     */
    @DeleteMapping("/admin/{adminId}")
    public ApiResult deleteById(@PathVariable("adminId") Integer adminId){
        adminService.deleteById(adminId);
        return ApiResultHandler.success();
    }

    /**
     * 更新管理员信息
     * @param adminId 管理员ID
     * @param admin 管理员对象，包含更新后的信息
     * @return 更新结果
     */
    @PutMapping("/admin/{adminId}")
    public ApiResult update(@PathVariable("adminId") Integer adminId, Admin admin){
        return ApiResultHandler.success(adminService.update(admin));
    }

    /**
     * 新增管理员信息
     * @param admin 管理员对象
     * @return 添加结果
     */
    @PostMapping("/admin")
    public ApiResult add(Admin admin){
        return ApiResultHandler.success(adminService.add(admin));
    }
}
